package com.xucan.log.jul;

import java.util.logging.*;

public class Main {
    public static void main(String[] args) {
        // 日志记录器对象父子关系
        Logger logger1 = Logger.getLogger("org.example.Main");
        Logger logger2 = Logger.getLogger("org.example");
        System.out.println(logger1.getParent() == logger2);
        // 所有日志记录器对象的顶级父元素 class 为 java.util.logging.LogManager$RootLogger name为""
        System.out.println("logger2 parent:" + logger2.getParent() + "，name：" + logger2.getParent().getName());

        // 1.创建日志记录器对象
        Logger logger = Logger.getLogger("org.example.Main");
 
        // 2.关闭系统默认的级别
        logger.setUseParentHandlers(false);
        // 3.重新配置日志具体级别
        logger.setLevel(Level.ALL);
        // 4.创建 ConsoleHandler 控制台输出
        ConsoleHandler consoleHandler = new ConsoleHandler();
        // 5.创建简单格式转换对象
        SimpleFormatter simpleFormatter = new SimpleFormatter();
        // 6.将 Handler 和 Formatter 进行关联: logger ——关联—— Handler ——关联—— Formatter
        consoleHandler.setFormatter(simpleFormatter);
        logger.addHandler(consoleHandler);
        consoleHandler.setFilter(logRecord -> {
            // 8.设置过滤器，过滤掉低于指定级别的日志
            return logRecord.getLevel().intValue() >= Level.WARNING.intValue();
        });
        // 7.设consoleHandler 控制台输出的级别~
        consoleHandler.setLevel(Level.ALL);
 
        // 8.指定日志的输出级别
        logger.log(Level.SEVERE,"SEVERE msg");
        logger.log(Level.WARNING,"WARNING msg");
        logger.log(Level.INFO,"INFO msg");
        logger.log(Level.CONFIG,"CONFIG msg");
        logger.log(Level.FINE,"FINE msg");
        logger.log(Level.FINER,"FINER msg");
        logger.log(Level.FINEST,"FINEST msg");
    }
}